/*
 *  $Id: ILocalizable.cs 1175 2010-11-07 19:52:17Z thenn.erannor $
 *	This file is a part of Ragima CCG.
 *	(C) 2008-2010 Ragima development group.
 *
 *	Licensed under the terms of the GNU GPL License version 2.
 *
 */

using System.Collections.Generic;

namespace Ragima.Languages {
    /// <summary>
    /// Интерфейс локализуемых ресурсов.
    /// </summary>
    public interface ILocalizable<T> where T : ILocalized {
        /// <summary>
        /// Строковой идентификатор ресурса.
        /// </summary>
        string ResourceId { get; }

        /// <summary>
        /// Очищает все локализованные ресурсы.
        /// </summary>
        void ClearResources();

        /// <summary>
        /// Локализует ресурс (добавляет локализованную версию).
        /// </summary>
        void AddResource(T resource);

        /// <summary>
        /// Копирует локализованные версии от другого ресурса.
        /// </summary>
        void CopyFrom(ILocalizable<T> otherResource);

        /// <summary>
        /// Получает локализованную версию ресурса.
        /// </summary>
        T GetResource(Language lang);

        /// <summary>
        /// Получает ресурс по умолчанию.
        /// </summary>
        T GetDefaultResource(Language lang);

        /// <summary>
        /// Получает все локализованные ресурсы.
        /// </summary>
        IEnumerable<T> GetResources();
    }
}
